Skip to main content

Sidebar Configuration

Learn how to configure sidebars in Docusaurus to organize your documentation.

Overview

Sidebars are configured in sidebars.js and control the left navigation panel when viewing documentation pages.

Basic Structure

const sidebars = {
tutorialSidebar: [
'intro',
{
type: 'category',
label: 'Getting Started',
items: ['getting-started/index'],
},
],
};

module.exports = sidebars;

1. Autogenerated Sidebar

Automatically generates sidebar from folder structure:

codeHtmlSidebar: [{
type: 'autogenerated',
dirName: 'code/html'
}],

Benefits:

  • Automatically includes all markdown files in the directory
  • Maintains alphabetical order
  • No manual updates needed when adding new files

Best for: Sections with many files that follow a consistent structure

2. Manual Sidebar

Explicitly define the sidebar structure:

tutorialSidebar: [
'intro',
{
type: 'category',
label: 'Guides',
items: [
'guides/pages',
'guides/docs/create-a-doc',
],
},
],

Benefits:

  • Full control over order and nesting
  • Can add custom labels
  • Can include links to external resources

Best for: Sections requiring specific ordering or custom organization

3. Category with Toggles

Create collapsible categories in the sidebar:

visualEditingSidebar: [
'design-editing/index',
{
type: 'category',
label: 'Guidelines',
link: {type: 'doc', id: 'design-editing/guidelines/index'},
collapsible: true,
collapsed: false,
items: [
'design-editing/guidelines/web-design',
'design-editing/guidelines/logo-design',
'design-editing/guidelines/video-editing',
],
},
],

Linking Sidebars to Navbar

Each sidebar must be referenced in the navbar configuration:

In sidebars.js:

wpGeneratepressSidebar: [{
type: 'autogenerated',
dirName: 'wordpress/generatepress'
}],

In docusaurus.config.js:

{
'type': 'doc',
'docId': 'wordpress/generatepress/index',
'sidebarId': 'wpGeneratepressSidebar', // Must match sidebar name
'label': 'Generatepress'
}

Naming Conventions

Use camelCase for sidebar IDs:

// Good
codeHtmlSidebar
wpGeneratepressSidebar
visualEditingCanvaSidebar

// Avoid
code-html-sidebar
wp_generatepress_sidebar

Creating Isolated Sidebars

To create separate sidebars for each menu item (like the Code menu structure):

  1. Create directories for each section
  2. Add index.md files to each directory
  3. Define sidebars in sidebars.js:
codeHtmlSidebar: [{ type: 'autogenerated', dirName: 'code/html' }],
codeCssSidebar: [{ type: 'autogenerated', dirName: 'code/css' }],
codePhpSidebar: [{ type: 'autogenerated', dirName: 'code/php' }],
  1. Link in navbar:
{
'type': 'dropdown',
'label': 'Code',
'items': [
{ 'type': 'doc', 'docId': 'code/html/index', 'sidebarId': 'codeHtmlSidebar', 'label': 'HTML' },
{ 'type': 'doc', 'docId': 'code/css/index', 'sidebarId': 'codeCssSidebar', 'label': 'CSS' },
{ 'type': 'doc', 'docId': 'code/php/index', 'sidebarId': 'codePhpSidebar', 'label': 'PHP' },
]
}

Common Patterns

Pattern 1: Simple Section

// Directory: docs/ai/platform/
aiPlatformSidebar: [{
type: 'autogenerated',
dirName: 'ai/platform'
}],

Pattern 2: Multi-Level Section

// Directory: docs/wordpress/generatepress/
wpGeneratepressSidebar: [{
type: 'autogenerated',
dirName: 'wordpress/generatepress'
}],

Pattern 3: Custom Ordered Section

tutorialSidebar: [
'intro',
{
type: 'category',
label: 'Getting Started',
items: ['getting-started/index'],
},
{
type: 'link',
label: 'Blog',
href: '/blog',
},
],

Troubleshooting

Warning: No docs found

Error: [WARNING] No docs found in "wordpress/generatepress": can't auto-generate a sidebar.

Cause: The directory exists but has no markdown files.

Solution: Create at least an index.md file:

sudo tee /opt/docker-data/apps/docusaurus/site/docs/wordpress/generatepress/index.md <<EOF
# Generatepress

Documentation for Generatepress.